﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
using Proggy.Data.Entities;

namespace Proggy.Data.Abstract
{
    public interface IProggyDataContext
    {
        /// <summary>
        /// Publishable nodes
        /// </summary>
        IDbSet<PublishableNode> PublishableNodes { get; set; }

        /// <summary>
        /// Draft nodes
        /// </summary>
        IDbSet<DraftNode> DraftNodes { get; set; }

        /// <summary>
        /// Trashed, but not deleted nodes
        /// </summary>
        IDbSet<TrashedNode> TrashedNodes { get; set; }

        /// <summary>
        /// The member groups
        /// </summary>
        IDbSet<Group> Groups { get; set; }

        /// <summary>
        /// The group members
        /// </summary>
        IDbSet<GroupMember> GroupMembers { get; set; }

        /// <summary>
        /// Members created via forms authentication
        /// </summary>
        IDbSet<FormsAuthenticationMember> FormsAuthenticationMembers { get; set; }

        /// <summary>
        /// Random data
        /// </summary>
        IDbSet<RandomDataItem> RandomDataItems { get; set; }

        /// <summary>
        /// Save changes
        /// </summary>
        /// <returns></returns>
        int SaveChanges();

        /// <summary>
        /// Dispose
        /// </summary>
        void Dispose();
    }
}
